package br.com.financas.service;

import java.util.ArrayList;
import java.util.List;

import br.com.financas.abstractions.IUsuarioRepository;
import br.com.financas.abstractions.IUsuarioService;
import br.com.financas.entity.Usuario;
import br.com.financas.repository.UsuarioRepository;

public class UsuarioService implements IUsuarioService<Usuario> {
	private IUsuarioRepository<Usuario> usuarioRepository;
	private List<Usuario> usuarios;
	private Usuario usuario;
	
	public UsuarioService() {
		usuarioRepository = new UsuarioRepository(manager);
		usuarios = new ArrayList<Usuario>();
		usuario = new Usuario();
	}
	
	@Override
	public String validaInserir(Usuario usuario) throws Exception {
		
		return null;
	}

	@Override
	public boolean validaDeletar(Usuario usuario) {
		return false;

	}

	@Override
	public String validaAtualizar(Usuario usuario) {
		// TODO Auto-generated method stub
		return null;

	}

	@Override
	public List<Usuario> obterTodos() {
		// TODO Auto-generated method stub
		return null;
	}

	public String validarCadastro(Usuario usuario, String novaSenha) throws Exception {
		String msgErro = null;

		if (!usuario.getSenha().equals(novaSenha)) {
			msgErro = "senha.invalida";
		} else {

			usuarios = usuarioRepository.obterPorLogin(usuario.getUsername());
			
			if (usuarios.size() != 0) {
				msgErro = "login.cadastrado";
			} else {
				usuarioRepository.inserir(usuario);
			}
		}
		return msgErro;
	}

	public Usuario validarUsuario(String username, String senha) {
		List<Usuario> usuarios;
		String senhaBD = null;

		usuarios = usuarioRepository.logar(username, senha);

		if (usuarios.size() != 0) {
			for (Usuario u : usuarios) {
				senhaBD = u.getSenha();
				usuario = u;
			}

			usuario = !senhaBD.equals(senha) ? null : usuario;
		} else {
			usuario = null;
		}

		return usuario;
	}
}
